#ifndef __GGEAR_POINT3_H
#define __GGEAR_POINT3_H

#include "ggear_types.h"

namespace ggear
{
	namespace gfx
	{
		template<class _Tx>
		struct Point3
		{
			//! Constructor
			Point3() : X(0), Y(0), Z(0) {}

			//! Construct from specified coordinates
			Point3(_Tx _x, _Tx _y, _Tx _z) : X(_x), Y(_y), Z(_z) {}

			//! Coordinates
			union
			{
				struct  
				{
					_Tx X;
					_Tx Y;
					_Tx Z;
				};
				_Tx Coords[3];
			};
		};

		typedef Point3<u32> Point3u;

		typedef Point3<s32> Point3s;

		typedef Point3<f32> Point3f;

		typedef Point3<f64> Point3d;
	}
}

#endif